create at:Sat Apr 4 09:18:26 CST 2020 sha256:2d3226b54996bc6fec64fe9eb87895b0f8dcfcdb855a6b9aaf28d52dc1ae2516 7691 # 摘 要 近年来随着工业生产技术的不断发展,自动化生产和监控系统扮演着非常重要的角色。随技术不断改革换代,工业生产环境会大量使用一些高精度集成化电子设备,这些设备有着严苛的工作条件。然而这些设备往往会受到环境因素的影响从而降低其使用性能甚至不能工作,比如环境温度过高或过低都会影响到电气设备的电气特性及机械特性,从而影响生产设备正常运行。使以生产设备和监控设备不能正常生产,甚至是发生意外事故造成经大规模生产事故、生产停滞或者人员伤亡。因此,在正常工作时必须保证生产环境的温度保持在合适的范围,那么就需要对生产环境的温度进行实时的监测和控制。

本毕业设计就是就应这样要求结合自己学习的知识设计一种能够实现对于温湿度能够进行实时的监测及报警,本设计具有精度高,电路简单,反应速度快,抗干扰性能强的特点整体结构包括硬件结构:主电路设计,显示电路、键盘电路。软件结构:主程序、温湿度采集程序,显示程序。程序采用progisp下载器将程序下载到单片机中。

关键词:Atmega8l-8AU,MF52NTC温度采集芯片,温度控制,数码显示

Abstract

In recent years, with the development of distribution technology, distribution cabinets play an important role in the power system. With the continuous reform of technology, power distribution cabinets continue to use some high-precision integrated electronic equipment, but these equipment and cabinet machinery structures are often affected by the cabinet environment factors to reduce its use performance, such as cabinet temperature and humidity is too high or too Low will affect the distribution cabinet electrical components of the electrical characteristics and mechanical properties, thus affecting the normal work of the distribution cabinet. So that the distribution of electricity problems on the entire power system has a negative impact, or even an accident caused by a large-scale power outage or casualties. Therefore, in normal work must ensure that the temperature and humidity inside the distribution cabinet to maintain the appropriate range, then the need for the distribution cabinet temperature and humidity in real-time monitoring ,

The graduation design is to be combined with such a request This design has the characteristics of high precision, simple circuit, fast response and strong anti-jamming performance. The overall structure includes the hardware structure: the main circuit design, the main circuit design, the main circuit design, Display circuit, keyboard circuit. Software structure:the main program,temperature and humidity collection procedures, display procedures. The program uses the progisp downloader to download the program to the microcontroller.

Keywords: Temperature and humidity measurement; temperature and humidity; single-chip; digital display

目 录

[TOC]

绪 论

温度控制系统研究的目的和重要性

在人类历史上,环境温度起着极其重要的作用。环境温度是工业生产中最常见的工艺参数之一。每个物理变化和每个化学反应过程都与温度密切相关。因此,温度控制是生产自动化中的重要任务。随着社会的发展,科学技术的进步以及温度测量设备在各个领域的使用,环境温度控制是现代温度控制系统发展的主要组成部分。尤其是近年来,温度控制系统已经应用于人们生活的各个方面,但是自动化、智能化温度控制一直是一个尚未发展的领域,但这是一个与人类息息相关的世纪之久的问题。在这种实际情况下,自动智能温度控制系统的设计具有广阔的应用前景和重要性。

此结构是为工业环境控制系统设计的,控制对象是工业环境温度。温度控制通常工业领域。过去,温度控制是手动进行的,没有给予足够的重视。实际上,在许多地方都必须很好地动态调节温度。鉴于此问题,此系统设计的目的是创建一个可使其自身适应设定温度的系统。它被广泛使用在工业生产领域,功能强大,小巧美观,易于携带。这是一种实用且廉价的控制系统。

温度控制系统研究概况

国外对温度控制技术的研究始于1970年代。首先,使用模拟组合仪器来收集现场信息并执行指令,记录和控制。分布式控制系统出现在1980年代后期。目前正在开发用于计算机数据采集的控制系统的集成多因素控制系统。当前,温度测量和控制技术在全球不同国家中迅速发展,并且一些国家正在朝着完全自动化和无人值守的方向发展。

中国对温度测量和控制技术的研究相对较晚,始于1980年代。中国工程师和技术人员已经吸收了工业化国家对温度测量和控制技术的吸收,从而掌握了室内温度的微机控制技术。该技术仅限于控制环境中的单个温度因子。中国温度测控设备的计算机应用一般处于从消化吸收阶段,易应用阶段到实用化,全面应用阶段的过渡和发展。从技术上讲,大多数情况下都存在由单片机控制的单参数单回路系统,并且没有真正的集成多参数控制系统。与工业化国家相比,差距很大。我国温度测控的现状还远远没有达到工业化水平。生产中仍有很多困扰我们的问题。设备支持能力差,工业化程度低,环境控制落后,软件和硬件资源无法共享和可靠。缺点,例如不良性行为。

直至今日,温度控制系统已经取得了从单一温度系统控制到智能温度系统控制的重大的技术突破,并且在技术上已经取得成熟,在自动控制领域已经有了巨大成绩。因此,在目前发展的基础上,制造一个基于单片机的温度控制系统基本没有太大缺点的存在。

温度传感器技术

传感器技术是现代信息技术的主要内容之一,信息技术包括计算机技术、通信技术和传感器技术。计算机和通信技术发展极快,相当成熟,而传感器应用技术因为需要使用模拟技术,而模拟技术还有很多问题难以解决,因此传感器应用技术也有待进一步发展。为了适应现代科学技术的发展,世界总舵国家都把传感器技术列为现代的关键技术之一。通常将能把非电量转换为电量的器件称为传感器,其实质上是一种功能块,作用是将来自外界的各种信号转换成电信号。它是实现测试与自动控制系统的首要环节。如果没有传感器对原始参数进行精确可靠地测量,那么无论是信号转换或信息处理,或者最佳数据的显示和控制都将无法实现。

温度传感器,使用范围广,数量多,居各种传感器之手。温度传感器的发展大致经历了以下三个阶段:传统的分立式温度传感器(含敏感元件),主要输能够进行非电量和电量之间的转换;模拟集成温度传感器/控制器;智能温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、集成化、智能化及网络化的方向发展。温度传感器按传感器与被测介质的接触方式可分为接触式温度传感器和非接触式温度传感器两大类,其中,接触式温度传感器的测温元件与被测对象要有良好的热接触,通过热传导及对流原理达到热平衡,这个示值即为被测对象的温度。这种测温方法精度比较高,并可测量物体内部的温度分布。但对于运动的、热容量比较小的及对感温元件有腐蚀作用的对象,这种方法将会产生很大的误差。非接触测温的测温元件与被测对象互不接触。常用的是辐射热交换原理。此种测温方法的主要特点是可测量运动状态的小目标及热容量小或变化迅速的对象,也可测量温度场的温度分布,但受环境的影响比较大。

温度传感器的发展大致可分为以下几种:
1. 热电偶传感器。热点偶传感器是工业测量中应用最广泛的一种温度传感器,它与被测对象直接接触,不受中间介质的影响,具有较高的精度;测量范围广,可从-50℃~1600℃进行连续测量,特殊的热电偶如金,铁,镍,铬最低可测到-269℃,钨,铼最高可达2800℃。 2. 模拟集成温度传感器。采用硅半导体集成工艺制成的,因此亦称硅传感器或单片集成温度传感器。模拟集成温度传感器是在20世纪80年代问世的,它将温度传感器集成在一个芯片上、可完成温度测量及模拟信号输出等功能。模拟集成温度传感器的主要特点是:功能单一、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温,不需要进行非线性校准,外围电路简单。 3. 光纤传感器。光纤测温技术可分为两类:全辐射测温法,单辐射测温法,双波长测温法,多波长测温法等。特点是:光纤挠性好、透光谱段宽、传输损耗低,无论是就地使用或远传均十分方便而且光纤直径小,可以单根、成束、Y型或阵列方式使用,结构布置简单且体积小。缺点是:测量起来困难,难于实现较高的精度,工艺比较复杂,且造价高,推广应用有一定困难。 4. 半导体吸收式光纤温度传感器。半导体吸收式光纤温度传感器是利用了半导体材料的吸收光谱随温度变化的特性实现的。一种传光型光纤温度传感器,是指在光纤传感系统中,光纤仅作为光波的传输通路,而利用其它如光学式或机械式的敏感元件来感受被测温度的变化。在这类传感器中,半导体吸收式光纤温度传感器是研究得比较深入的一种。 5. 智能温度传感器。智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部包含温度传感器、A/D传感器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(中央处理单元)、随机存取存储器(随机存取存储器)和只读存储器(只读存储器)。智能温度传感器能输出温度数据及相关的温度控制量,适配各种微控制器(M中央处理单元),并且可通过软件来实现测试功能,即智能化取决于软件的开发水平。 6. 数字温度传感器。开始供电时,数字温度传感器处于能量关闭状态,供电之后用户通过改变寄存器分辨率使其处于连续转换温度模式或者单一转换模式。在连续转换模式下,数字温度传感器连续转换温度并将结果存于温度寄存器中,读温度寄存器中的内容不影响其温度转换;在单一转换模式,数字温度传感器执行一次温度转换,结果存于温度寄存器中,然后回到关闭模式,这种转换模式适用于对温度敏感的应用场合。在应用中,用户可以通过程序设置分辨率寄存器来实现不同的温度分辨率,其分辨率有8位、9位、10位、11位或12位五种,对应温度分辨率分别为1.0℃、0.5℃、0.25℃、0.125℃或0.0625℃,温度转换结果的默认分辨率为9位。DS1722有摩托罗拉串行接口和标准三线接口两种通信接口,用户可以通过SERMODE管脚选择通信标准。

本文研究的目的和意义

由于传统的温湿度监测装置主要使用51单片机,而在温湿度采集使用了大量的逻辑电路结构复杂,传输速度慢,而且利用这种方法生产的仪表大多是只能对柜内的温湿度进行采集和显示,而且误差较大,不适合安装在配电柜内,而本文采用Atmega8l-8AU单片机,其内部资源相对比51更为丰富,而且内部含有AD转换模块,省去大部分仪表对温湿度采集后还须设计放大及AD转换电路,来进行数据转换接收,这样相对比传统仪表本设计电路更加简单而且可靠性更强,能够适应配电柜内复杂电气环境,可以对内部断路器或者电力电子设备进行监测,更好的保证配电柜稳定正常运行。

随着互联网技术的发展,未来配电柜必然向着网络化的方向发展,实现整个配电系统的计算机网络化控制,这样对于监测仪表来讲,快速的数据传输,较大的内存空间已成为发展趋势,本设计正是由于这样的一个出发点设计,利用单片机集成化和快速的处理能力能够更好地适应将来市场发展,具备比传统仪表更高的市场潜力。

本设计通过对配电柜内部高压断路器或者电力电子设备进行温湿度采集监测,通过报警保证配电柜内主要工作器件的稳定工作,实现对于配电柜的保护和监测功能。本设计的研究,符合现在以及未来市场的需求,具有较高的实际意义,本设计不仅功能多、结构简单,由于采用更为精确的传感器进行数据采集,误差小,因此能够应用于更多的领域,由于我国电力系统的稳定和发展,能够保证电能更好地输送和分配,降低电力系统的危险,保障了变电所工作人员的人身安全。具有很大的研发意义。

设计主要内容

本文从传统工业环境温度监测方法入手,分析了其对传统工业环境温度检测的优点和不足。结合当前科技的发展,本文提出了一种基于 Atmega8-8AU单片机的异常温湿度监测报警系统的设计,实现对配电柜柜内温湿度的实时监测的目的。在本设计中,详细介绍了整个系统的功能以及整个系统的硬件和软件的设计。具体内容如下:

首先,本文首先第一章介绍了对室温监测的背景、发展现状及目的意义,阐述了本课题研究的出发点以及要达到的目标。系统地介绍了不同时期对高压配电柜柜内温湿度监测的方法,以及目前对高压配电柜温湿度监测的主要方式。介绍了现在国内对于温湿度监测技术的发展情况。最终选择了一种利用热敏电阻测温,HS1101湿度传感器测湿的集成传感器实现温湿度的测量,利用单片机将传感器采集的数据进行处理实现室内的温湿度的监测。第二章通过对硬件电路的设计阐述,将本设计实现的方式展现出来,讲述了设计原理。第三章则对软件设计部分进行了讲解,阐述了本设计在软件设计部分的思路和实现方法。第四章是对本设计整体可靠性能进行了相应分析,保证了整个系统的实际可行性。第五章对于实物进行实际的比较和分析。

总体设计原则

由于本设计的产品是应用在工业生产环境,在技术参数上参考的生活中,所以在设计时元器件的选择要满足其技术要求。要实现对于温度实时监测,而且考虑到生产车间内复杂的工作环境,所以系统要有很好抗干扰能力,同要求测量结果精确并且能够通过数码管显示出来,通过对室内温湿度值的判断进行相应的显示和报警。同时作为一个适应市场的设计那么其设计外观要适应盛传环境内的空间,所以要求体积尽量小,成本低,性价比高的芯片和电路设计。 ### 设计方法实现 由于对于一款仪表的设计工作量十分繁重而且十分复杂,那么再设计过程中就要将系统模块划分通过一部部的模块设计最终完成整个及系统的设计[5]。 1. 硬件电路的实现
硬件电路的设计就是要将设计中要实现功能转变为现实。通过单片机控制,外围电路的设计来实现整个系统的功能。那么对硬件电路设计就应该包括主控制器的外围接口的设计,还有其复位电路,时钟电路,报警电路。由于配电内的仪表室供电电压为220V交流电,单片机的供电电压为5V直流电。所以还需设计电源转换模块。将仪表能够直接在仪表室内取电使用,在要求实现显示、控制就包括显示电路、按键电路,和相应控制电路。对于要测量的采集就需要传感器使用那么对传感器的选择,对于这里,我选择了我实习公司生产的一款传感器,这款传感器结构简单功能齐全。 2. 软件设计
对于软件在本设计中起着很重要的作用,系统的参数和驱动都是依靠软件来实现的。在系统中虽然只测量的量只有温湿度,但由于这两个量都是非电的物理量,这就需要在软件设计时添加很多算法和函数,这就使得程序变得复杂,在这里温度由于传感器直接采集电压信号所以就要添加A/D模块,由于热敏电阻的特性在程序设计师究竟是用插值法和查表法,湿度是频率信号的形式传输的,那么就可以采取利用外部时钟信号来启动定时器/计数器来测量,就需要在硬件内启动多个定时器和计数器的使用。加大了主程序的难度,那么在程序设计的时候就应该采用模块化的方法,将复杂程序进行简化,通过各个模块的相互配合来实现这个软件程序的驱动。 3. 软件和硬件的相互协调
在某些特别的模块是可以同硬件来实现也可以通过软件实现的。通过软件和硬件相互协调可以优化设计方案,提高设计的质量,性能,降低设计的成本和负担,以软件为主的方案能降低成本,但需要投入大量的时间来进行软件设计。从可靠性来讲,硬件设计的越多那么器件的选择,焊接的质量会造成很多故障点;而软件会是在故障排除后,其可靠性不会发生改变相对稳定。所以在具体设计中应该结合系统的设计要求和相互对比在一些易于出现故障的地方进行反复的推敲,来确定是用软件设计来代替还是通过硬件设计来消除故障的发生,从而优化系统。

系统工作原理

单片机温度控制系统是以 Atmega8-8AU单片机为控制核心,辅以采样反馈电路,驱动电路,晶闸管主电路对工业环境温度进行控制的微机控制系统。其基本控制原理为: 用键盘将温度的设定值送入单片机,并在发光二极管显示,启动运行后,通过信号采集电路将温度信号采集到后,送入单片机系统进行PID 控制运算,将控制量输出,改变可控硅管的接通时间便可改变加热丝功率,以达到调节温度的目的控制电阻炉的加热。

当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。

本毕业设计就是就应这样要求结合自己学习的知识设计一种能够实现对于温湿度能够进行实时的监测及报警,本设计具有精度高,电路简单,反应速度快,抗干扰性能强的特点整体结构包括硬件结构:主电路设计,显示电路、键盘电路。软件结构:主程序、温湿度采集程序,显示程序。程序采用progisp下载器将程序下载到单片机中。

当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。

系统功能介绍

本设计是对工业环境温度进行检测与控制,设计的温度控制系统实现了基本的温度控制功能:当温度低于设定的温度时,系统自动通过PWM启动加热装置,使温度上升。当温度高于设定的温度时,停止加热。三位数码管及时显示温度,精确到小数点后一位。
本文设计的温度控制系统具有如下功能:

  1. 通过温度芯片MF52NTC采集温度,并以数字信号的方式传送给单片机。
  2. 四位数码管动态实时显示房间温度,显示精度0.10C。
  3. 三个按键实现对于标准温度的设定。
  4. 利用温湿度控制芯片对于温度进行自动或手动控制。

课题研究与开发技术基础

Atmega8l-8AU 芯片

主芯片的选择:对于本设计来讲有要实现功能很多,测量的量要实现很复杂,同时要求实物体积尽量小,所以就要选择一款功能是十分强大而且外部引脚较多的单片机。所以我选择了Atmega8l-8AU,这种单片机相对比51来讲传输速度更快,内部资源更丰富,同时其驱动能力更强每个端口都能设为输入输出,性价比高。

Atmega8l-8AU具有的优势

  1. 单片机内部具有高质量的Flash程序存储器大小为8K,支持ISP和IAP。便于程序的调试和开发。内部512字节EEPROM就有寿命长,可以长期保存数据避免断电丢失。内部RAM容量大并且能够满足高级语言开发[7]。
  2. 单片机的外部I/O接口全部可以设置上拉电阻,并且可以单独设定为输入和输出两种模式。也可以设置为高阻态输入。I/O口具有资源灵活、驱动能力强大、功能强大的特点。
  3. 单片机内部包含许多种独立的时钟分频器,为UART、I2C、SPI提供使用。这其中的8位或者16位定时器配合的具有多达10位的预分频器,能够通过程序的设定的分频系数提供多种定时时间[8]。单片机内独有的定时器/计数器双向形成的三角波,在和输出比较寄存器相互配合,形成占空比可变、频率可变、相位可变的方波设计方法[9]。
  4. 单片机具备增强型的高速同步异步串口,可以实现硬件生成校验码、硬件检测和校验、两级接收缓冲、在接收时能够主动调整定位波特率,屏蔽数据帧数等功能,提高了通信的可靠性,程序编写更加方便,方便组成分布式网络和实现多机通信系统的复杂应用。由于串口功能十分强大,单片机速度快,中断响应时间比较短,能够实现高波特波特率通信。
  5. 具有面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,能够实现主从机的接收和发送的全部4种组合的多机通信[10]。
  6. 单片机具有自动上电的复位电路、独立的看门狗、低电压检测电路,多个复位源,能够设置在系统启动后延时程序运行。
  7. 单片机内还具有多种省电休眠模式,抗干扰能力强

特性

AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。ATmega8 有如下特点:8K 字节的系统内可编程Flash( 具有同时读写的能力,即RWW),512 字节 EEPROM,1K 字节 SRAM,32 个通用I/O 口线,32 个通用工作寄存器,三个具有比较模式的灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,面向字节的两线串行接口, 10 位6 路 (8 路为TQFP 与MLF 封装)ADC,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及五种可以通过软件进行选择的省电模式。工作于空闲模式时CPU 停止工作,而SRAM、T/C、 SPI 端口以及中断系统继续工作。掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作。

在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力。本芯片是Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(Application Flash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega8 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

MF52NTC热敏电阻

NTC(负温度系数)是负百分比电阻变化每度℃.要确定一个精确的电阻误差的热敏电阻的温度系数,高精度小体积MF52NTC热敏电阻探头要比玻封外型探头更小而引线绝缘,其设计非常可靠,工作环境温度 -50℃至125℃,快速的反应时间和高可靠性使它更加适用于医疗设备和电子温度计产品系列.

过热保护器件用于保护设备及内部电路,防止受到发热的影响。 PTC热敏电阻(温度检测传感器)在室温环境下电阻值不会发生变化,但一旦超过某一温度(居里点),电阻值便会急速上升,通过利用这一特性,能够检测到异常发热。 此外,贴片NTC热敏电阻应用了从积层贴片陶瓷片式电容器中积累而来的积层技术,并在世界范围内率先生产出了行业最小形状的产品。

热敏电阻主要有以下几个特点:

  1. 电阻温度系数大,灵敏度高,通常温度变化1℃,阻值就变化1%6%,戴南组温度系数绝对值比一般的金属电阻大10100倍。
  2. 结构简单,体积小。
  3. 高电阻率,较小的热惯性,适合动态测量。
  4. 使用方便,组织和温度变化成非线性关系。

NTC负温度系数热敏电阻构成

NTC(Negative Temperature Coefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料.该材料是利用锰、铜、硅、钴、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体陶瓷,可制成具有负温度系数(NTC)的热敏电阻.其电阻率和材料常数随材料成分比例、烧结气氛、烧结温度和结构状态不同而变化.现在还出现了以碳化硅、硒化锡、氮化钽等为代表的非氧化物系NTC热敏电阻]材料。

NTC热敏电阻的温度特性符合指数规律

NTC热敏半导瓷大多是尖晶石结构或其他结构的氧化物陶瓷,具有负的温度系数,电阻值可近似表示为: $ R_t = RT EXP(Bn(1/T-1/T_0) $ 式中RT、RT0分别为温度T、T0时的电阻值,Bn为材料常数.陶瓷晶粒本身由于温度变化而使电阻率发生变化,这是由半导体特性决定的。

MF52NTC热敏电阻参数

温度传感器绝缘引线规格: UL 3398 22AWG.黑色
传感器端子规格:XH 2.5黑色 HOUSING规格:XH 2.5-2P.
NTC温度传感器未标注尺寸公差为±1.5mm.
热敏电阻器符合RoHS要求.
NTC热敏电阻规格:R25=10K±1% B25/85=3435

MF52NTC热敏电阻特点

  1. 体积小适用于狭窄空间
  2. 快速响应时间,灵敏度高
  3. .引线耐弯折及易焊接
  4. 热敏电阻优良的电绝缘性能
  5. NTC探头引线尺寸可按要求定制

Progisp

progisp是一款USB编程下载器,支持对所有的AVR芯片进行编程,还可以对数据改变下载、比较识别字,芯片擦除等选项进行选择。

功能特点

  1. 可通过progisp对免驱动USB下载器进行在线升级。
  2. 可以编写所有atmel的低压isp编程接口的avr单片机/s5x/s8253/93cxx/24cxx
  3. 可以通过progisp自定义支持最新型号的芯片的编程。
  4. 适应电压宽(2.7v-5.5v)
  5. 可为目标板提供时钟(对于AVR锁定芯片特别有用)
  6. 可超低速下载(使用32768HZ的精振)
  7. 下载速度快(8K程序大约2秒)
  8. 可配合progisp实现编程项目的工程化管理

使用方式

  1. 选择芯片 点击选择芯片的下拉框,选择要下载的芯片。 点击“黑色的箭头”可以弹出下载器与你的目标 cpu 的提示接线图或 cpu 在编程座上的 摆放位置图,如果是 isp 下载线是 10pin下载线接口与目标 cpu的连线示意图 如果是 hv 模式是 cpu 在编程座上的摆放位置图
  2. 编程选项 勾选“编程栏”相应的编程选项,点击“自动”可以完成编程。如果出错会有对话框弹 出进行提示。如果写入成功,信息提示栏会显示出相应成功的信息。也可以点击“擦除”擦 除芯片。 【提供时钟】勾选配合下载器的 XTAL 引脚可以解锁部分 avr 锁定芯片(ISP 模式有用)使 用方法 XTAL 连接目标板 cpu 的 XTAL1 引脚。这时就可以进入编程模式(锁定芯片是进入 不了编程模式的)。 【数据改变下载】指的是你调入的数据区的文件一旦改变,progisp 会自动执行“自动”执 行相应的动作。 【数据自动重载】指的是你调入的数据区的文件一旦改变且您点击了”自动“按钮,progisp 会重新调入您调入数据的文件,这个选项选中关闭 progisp,下次启动时会自动调入您最后 一次调入的文件。 所有的动作均可选择相应的主菜单来实现。
  3. 数据缓冲区 可以点选下面的 flash 或 eeprom 进行切换。也可以直接在编辑区进行编辑
  4. 编程器测试 如果你的下载器或编程器支持的话可以利用此栏测试你的下载器或编程器进行测试。 对于高压编程器,你可以使用万用表,负表笔连接编程座 20 脚。正表笔连接编程座其 他脚这时点击软件中对应编程座的测试条,红色,5v 输出,蓝色 0v,内部短的测试条除 40 脚出是 5v,其他位置均是 12.5v(这个数字式估测,12-13v 之间均正确) 对于 ISP 下载器测试方法相同,负表笔接 10 脚 gnd,需要注意的 Nc 不起作用。

ICCAVR编译器

ImageCraft 的ICCAVR 是一种使用符合 ANSI 标准的 C 语言来开发微控制器 MCU程序的一个工具。

主要有以下几个特点

  1. ICCAVR是一个综合了编辑器和工程管理器的集成工作环境(IDE);
  2. 源文件全部被组织到工程之中,文件的编辑和工程的构筑也在这个环境中完成,错误显示在状态窗口中,并且当你点击编译错误时,光标自动跳转到错误的那一行;
  3. 该工程管理器还能直接产生 INTEL HEX格式文件的烧写文件(该格式的文件可被大多数 编程器所支持,可以直接下载到芯片中使用)和符合 AVRStudio的调试文件(COFF格式)。
  4. ICCAVR是一个32位的程序,支持长文件名。
  5. ICCAVR是一个综合了编辑器和工程管理器的集成开发环境(IDE),是一个纯32位的程序,可在 Win 95、Win 98、Win ME、Win NT、Win 2000、Win XP和Win 7环境下运行。

发光二极管数码管

发光二极管显示器即为新型发光二极管显示器,具有数据显示醒目、成本低、配置灵活、接口可以方便等特点,单片机电源管理控制系统在应用数据管理操作系统的设计中常用它来直接显示电源管理操作系统的日常工作生活的状态和过程中所采集的数据在信息网络中所输入的数值等。

根据大屏幕发光点阵二极管的排列和结构不同,可将大屏幕发光点阵二极管显示器划分为大屏幕发光二极管点阵数码管和大屏幕发光二极管点阵数码显示器。大屏幕发光二极管点阵数码管主要就是用于在屏幕上显示英文数字和一些英文字母和图形符号,发光二极管点阵显示器同样可以在屏幕上显示英文数字、字母、男人和图形等。大屏幕发光点阵二极管数字点阵显示虽然点阵显示灵活,但它们主要占用的是单片微型计算机系统的软硬件资源比大屏幕发光二极管点阵数码管显示器要多得多。除了使用指定的程序,大屏幕发光点阵数码管显示器或led点阵显示器主要用于请求特殊的点阵显示场合,几乎所有的微型计算机系统应用点阵显示系统都使用大屏幕发光二极管数字点阵显示。

数字管理

数字管理的显示系统主要有两种显示模式,包括静态数据管理显示程序模式和动态显示程序模式。静态数据管理显示的程序非常不复杂,静态数据管理显示系统的程序模式设计起来非常简单,占用cpu的内存时间很少。仅需要当系统的显示字符串发生更改时才可以调用动态显示程序。但是,硬件和集成电路很多。每个八位数字晶体管都至少必须需要一个8位i/o电源输出输入端口,一个8位限流电源输出驱动器和8个8位限流输出电阻。通常偶尔也可能会需要使用少量的圆形数码管。发光二极管的应用由于静态扫描显示器需要使用较少的电子管组件,并且需要使用更多的静态数字组件与电子管组件在显示器之间进行切换很麻烦。为了有效简化了电路并且大大降低了成本,系统设计使用了一种动态扫描数字显示的方法。

动态扫描显示模式的工作原理是分别打开每个显示器,即一次仅显示一位。为了使用户看到所有的显示器都已显示,必须加快每个显示器的照明周期(增加扫描频率)。通过使用人眼的视觉残留效果,可以实现与连续显示所有显示器相同的效果。

系统硬件电路设计

本系统实现的功能主要是:通过传感器将温度采集,并实时通过数码管显示、通过端口与主机进行实时的数据传输,其中主机可以控制仪表的工作、系统给定温度值得设定,系统通过传感器得到的数据以及程序的控制能够自动或者手动来调节温度的变化。原理框图如图1所示:

图1

图1

硬件模块

根据本设计要实现的具体功能能够大致确定硬件电路应包含以下几个模块:主控制器、温湿度传感器、数码管显示电路、键盘电路、ISP下载电路、报警电路、电源电路等[6]。

主电路设计

时钟电路设计

时钟单片定时的标准,时钟电路必须按照单片机的要求来设计[11]。本设计的是在单片机外部采用8MHZ的晶体振荡器,单片机上XTAL1与XTAL2的作用分别是单片机内的振荡器的反向放大器的输入和输出,并在其两端加入电容用来消除噪声。放大器的模式是由熔丝位CKOPT来控制的。当熔丝位处于编程状态时振荡器在其输出引脚产生的振荡是满幅度的。这种模式频率范围比较宽而且十分适合噪声环境或者需要利用XTAL2引脚驱动第二个时钟缓冲器的时候。当熔丝位处于没被编程的时候,振荡器的信号输出幅度是比较小的。这样可以很大程度上降低功率损耗,同时这种情况下频率范围很窄不能够驱动其他时钟。

复位电路设计

单片机的复位是指利用硬件或者软件实现单片机和其内部逻辑电路的初始化复位是系统启动完成不可缺少的步骤。 在实际中复位引脚会受到很多外界影响,而且复位引脚通常会与ISP端口相接这样的话,其接线会较长,所以利用一个RC串联电路可增强抗干扰能力。同时在系统掉电时,电容会放电,给复位引脚一个高电平,当电源来电时,就会给复位引脚一个复位信号。而在正常时在电容充电完成复位引脚会一直处于低电平。

各模块设计

温度采集电路

温度是一个常见非电物理量要想测量温度必须将其转变成可以测量的电信号,随意对于温度测量电路采用热敏电阻为感应器件,通过分压的方式利用电压的变化来反映当前的温度值[12]。根据电阻率随着温度变化的典型特性不同热敏电阻基本分为三种类型:负温度系数热敏电阻、正温度系数热敏电阻和临界温度热敏电阻。本设计温度采集电路采用MF52NTC温敏电阻作为感应元件,NTC热敏电阻器,其电阻率随着温度的升高而均匀减小,NTC热敏电阻一般采用负电阻系数很大的固体多晶半导体氧化物的混合物制成。测温、温度补偿和控温电路都可以根据热敏电阻的这一特性来设计,而且还可以设计成用来降低电路的浪涌电流的功率型组件。

图2-2温度采集电路

图2-2温度采集电路

从上图可以看出温敏电阻和定值电阻R5形成了一个串联分压电路,输出电压Vtemp由于分压得到了一个随电阻值变化而变化的电压值,通过这个电压变化的数值能够得到NTC电阻的大小,也就能算出当前的温度值。从上图可以看出温敏电阻和定值电阻R5形成了一个串联分压电路,输出电压Vtemp由于分压得到了一个随电阻值变化而变化的电压值,通过这个电压变化的数值能够得到NTC电阻的大小,也就能算出当前的温度值。

例如,查表可知当温度值为0度是Rt电阻值为12.6900 千欧,那么该温度的数字量为572,以此类推可得到个温度的数字量。

利用欧姆定律可以算出输出电压值Vtemp和NTC电阻值的关系表达式:

$ V_{temp} = R_t/(R_t+R_5)*V_{cc} $ (2-2)

那么这温度点对于ADC转换之后的数字量可以计算:

$ D_{adc} = 1024*R_t/(R_t+R_5) $(2-3)

例如,查表可知当温度值为0度是Rt电阻值为12.6900 千欧,那么该温度的数字量为572,以此类推可得到个温度的数字量。

温度报警电路

本次设计有2个温度的设定最低点和2个温度的设定最高点。当前温湿度中的某项数据高于或低于该范围时,单片机将对其产生处理方案,在反馈给继电器的同时也将启动报警电路。蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器[18],因此需要增加一个电流放大的电路。本设计采用一个三极管C8550来放大驱动蜂鸣器。蜂鸣器报警电路如图2-4所示: 图2-4 温湿度报警电路 如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的正极接到三极管的集电极,三极管的基极B经过限流电阻R1后由单片机的引脚控制,当单片机输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当单片机输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制单片机引脚的电平来使蜂鸣器发出声音和关闭。在蜂鸣器两端并联一个二极管,起到续流的作用,当三极管停止导通时,由电流突然减小,而蜂鸣器内部线圈的缘故,会产感应电流,所以添加一个续流二级管起到保护电路的作用[19]。

显示电路设计

发光二极管LED是简单而且廉价的显示输出设备,是目前智能仪器应用最为广泛显示设备,具有低电压,驱动电流小、快速响应、使用寿命长等特点[20]。数码管有共阴、共阳极两种,本设计采用共阳极的2个3位8段数码管来显示温湿度得值。在数码管的每段都应接一个电阻作为限流使用,当LED显示器与单片机的借口相接时,需要用锁存器将总线上瞬时信息锁存,来驱动显示器。驱动显示器的方式有静态驱动和动态驱动两种。

静态驱动是一个锁存器对应一位显示器的接口形式称为静态显示只要将显示信息送入锁存器中,显示器就将持续显示该信息,显示亮度易于保证,其缺点时当显示器为数较多时,需要较多的锁存器,限流电阻等硬件,成本高,功耗也大。

动态驱动是当显示器为数较多时,适合采用动态驱动,其利用人视觉上残留的现象是个显示器轮流点亮,当每个显示器点亮的通电频率在50Hz以上时,人就不会感觉到显示器的闪动了。

由于要显示3位8段数码管而且有两个,所应采用动态驱动方式,利用两个74HC595锁存器,其中电源和清楚短接高电平,输出有效端和低端接低电平,数据从串行数输入端接入锁存器,在每个数据输入时钟上升沿时,串口数据移入锁存器内的寄存器,在每8个时钟周期完成一次数据传输在下一个时钟上升沿时,数据在出行输出端接处,由于采用两个锁存器,当串行输出端和和下一个锁存器的串行输入端连接时,两个锁存器实现了级联,数据会进入下一个锁存器,当给输出始终一个上升沿时数据进入锁存器这个时候当输出有效端低电平时,数据会从Q0~Q7端口传出,由低位到高位输出,这时,锁存器输出端和Led的8段相连,通过限流电阻的保护数码管的每段会被点亮,当级联的数据进入下一个锁存器是时通过同样的道理,由其控制这数码管的位选端,可以选择点那个数码管,这样一个锁存器控制显示的数字,另一个控制着点那个数码管实现数据的显示。

其电路图如图2-5所示:

图2-5 显示电路

图2-5 显示电路

电源电路设计

由于室内的交流电压为220V,而单片机电源电压为5V,所以设计一个经变压器变压在经过整流桥调压,再稳压的一个电源电路设计[20]。系统原理如图2-6所示:

图2-6 电源系统原理

图2-6 电源系统原理

首先当电源电压220V进过电压器变压会得到一个12V的交流电但是单片所需供电为5V的直流电,锁着需利用整流电路将交流电转换为直流电,这里采用MB10s整流桥堆,MB10S整流桥堆的工作原理为与单相全桥整流电路相似,能够使将变压器变压后的电压和电流保持一个方向不变但其虽然电压的方向单一的,但含有较大的交流成分,并不能直接给单片机供电,因此,在一般整流电路后,还需利用滤波电路将脉动的直流电压变为平滑的直流电压,电容滤波电路是比较常见而且简单滤波电路,电容比一般采用电解电容, 电容滤波电路利益哦那个电容的充放电作用,使输出电压趋于平滑。

虽然整流滤波电路能够将交流电变为变为比较平滑的直流电压,可是由于输出电压是变压器副边电压有效值,当电压发生波动时,输出电压也会有波动,并且由于整流桥内的内阻影响当负载变化时内阻电压也会变化,从而影响输出电压的平均为了使输出的直流电更加稳定,还需采用稳压电路,稳压电路采用7805三端稳压器。折是一种集成电路元件,其外部有三个引脚分别为输入端、输出端、和公共端。按照功能可以分为固定式和可调式。本设计的电路采用固定式,其稳压电路如图所示,电容C3用于消除输出电压的高频噪声,一般取小于1F的电容,也可以采用大一些的比如几微法的电容这样可获得比较大的脉冲电流。后电解的电解电容是用来滤波的。如果输入线很长的话,也可以在输入端加一个电容用来防止电路的自激振荡,但是如果C3的容量很大的话,一旦输入端断开,C3会向稳压器放电,从而损坏稳压器,所以,也可以再在输入和输出之间装一个二极管来保护电路。同其他的大功率元件一样7085的封装有金属和塑料封装两种其外形同设计成便于自身散热或者安装散热器。所以电源电路最终设计如图2-7所示:

图2-7 电源电路图

图2-7 电源电路图

本章小结

这一章主要介绍了本设计的硬件电路设计部分,将硬件的设计模块和实现方式进行了阐述,本设计主要通过电源转换电路可以将硬件直接接在配电柜的仪表室内,通过显示电路是监控的温湿度值可以显示在数码管上,利用键盘电路可以将参数设定在硬件内并且可以控制柜内温湿度控制器,来保证温湿度的稳定。但是由于有配电柜内的空间较大有时一个传感器不能满足,将柜内温湿度直观地反映出来,可能涉及到多点测量,这样的话可能会造成信号在传输过程中出现问题,同时由于配电柜内电气干扰很大可能会造成数据的失真情况,所以柜体很大的配电柜内使用本设计的话还需加入隔离电路来保证数据接受的稳定和测量精度。

系统软件设计

任何形式的微机都离不开软件。软件设计是设计硬件的重要部分,通过软件才能让单片机实现他的功能,其实再从设计方案开始时就应该考虑到软件设计,因为软件程序的大小,决定这硬件CPU的内存选择,这就要涉及到单片机的选型了,这样可方便软件和硬件之间的相互协调工作,并且想好之后的软件设计和调试工具。当硬件做好之后软件设计就可开展开来,软件是可以单独编写然后进行调试的,当再测试工具上么有问题时,就可将软件下载单片机中来,测试硬件的功能。 对于程序设计应该满足以下要求: 1. 可靠性,对于任何硬件来言,其驱动程序都应该要求工作可靠,如果程序本身就不可靠的话,那么不管他设计的有多么巧妙,功能多齐全,结构都复杂这都是毫无用处的。它与硬件的设计不同,硬件的使用可能会受到外部因素的影响,但对于软件来他的可靠性主要在于程序是否正确。 2. 精度,程序中可能包含着大量计算,可能有大量的函数使用和复杂的数据处理,就拿本设计而言,在温度采集中采用串联分压方式最终传感器采集的是电信号,并不能被单片机直接接收,所以还要加数模转换,单片机内部的10位AD转换在计算温度是采用应该是插值的方法,这就需要大量的计算。而且在数码管上显示的时候还需设定显示的精度。 3. 速度,对于硬件来讲,他是有工作周期的,要按照时间节拍执行一步步指令,如果程序执行速度很慢的话,在工作周期内不能够完成相应的操作,就可能会造成丢失或者某些重要操作的延误。 4. 易理解性、易维护性。通常是指软件系统容易阅读和理解,容易发现和纠正错误,容易修改和补充。由于生产过程自动化程度的不断提高,测控系统的结构日趋复杂,设计人员很难在短时间内就对整个系统理解无误,软件的设计与调试不可能一次完成,有些问题是在运行中逐步暴露出来,这就要求编制的软件容易理解和修改。在软件的设计方法中,结构化设计是最好的一种设计方法,这种设计方法是由整体到局部,然后再由局部到细节,先考虑整个系统所要实现的功能,确定整体目标,然后把这个目标分成一个个的任务。任务中可以分成若干个子任务,送样逐层细分,逐个实现。本仪表就是采用这种模块化的设计方法。这样不但使得设计目标明确、思路清晰,而且在检错、调试时也很方便。当出现问题时,可以根据问题的种类和现象来判断是哪一部分出的问题,很容易找出故障所在和故障原因。同时,采用模块化程序结构设计方案,对于系统功能的扩充和修改也提供了很大的方便。 5. 实时性是电子测量系统的普遍要求,即要求系统及时响应外部事件的发生,并及时给出处理结果。近年来,由于硬件的集成度与运算速度的提高,配合相应的软件,实时性比较容易满足设计要求; 6. 准确性对整个系统具有重要意义,尤其是测量系统,系统要进行一定量的运算,算法的正确性和准确性对结果有着直接的影响,因此在算法的选择、计算的精度等方面都要符合设计的要求; 7. 可靠性是系统软件最重要的指标之一,作为能够稳定运行的系统,抗干扰技术的应用是必不可少的,最起码的要求是在软件受到干扰出现异常时,系统还能恢复正常工作。结合上述编制系统软件的基本要求,首先讨论软件的设计思想。

软件设计的基本方法是结构化程序设计基本步骤为: 1. 从上到下分层设计,把整个软件任务划分若干大的任务,每个大任务再分若干个小任务,这样一层层的分下去,直到这个小任务可以用编程语言实现为止,一般是先从主程序来设计,其他子程序,分程序,先用一些模块来代替,当系统一级程序编好之后,再将这些模块一次扩展为模块,,从而完成整个程序的设计。 2. 模块化编程,分层设计没有解决怎么产生每一层次的程序模块,模块化编程可以对同一部分内容的任意改动并且不行其他程序的设计,要不然就不能够将这些组成同一模块,按照这样思路模块内的程序更利于独立运行、修改和调试,方便实现一些有独特功能的子程序设计。 3. 结构化编程,采用模块化的结构程序更利于进一步细分,优于任何单一入口和出口的程序呢都是有以下三种基本结构组成:顺序结构、条件结构、循环结构。这三种结构在编程语言中都有对应的语句或者指令,而且他们都是单一出口和入口,这样查找问题是很方便。 现在单片机主要的开发语言是C语言,C语言相对比汇编来讲有更好的可靠性并且他可反复擦写。而且在设计完成相同功能的程序时,C语言的效率要比汇编的效率高出很多。并且更加方便调试和更改。其编程语言相能够更好兼容其他高级语言和和汇编词汇,同时也能够象汇编那样根据硬件的内部特性来设计程序驱动单片机的内部寄存器和外部接口。C语言是一种能快速上手而且易懂的结构化编程语言。每一程序都可以由一个或者多个相互独立的程序组成,可以互相调用。其语言模块还能够与汇编相互组合成为一个完整的程序。在目前的单片机编程序言中,C语言越来越受到人们的欢迎。

软件设计思想

为了满足系统的要求,编制软件时必须符合以下基本要求:

易理解性、易维护性。通常是指软件系统容易阅读和理解,容易发现和纠正错误,容易修改和补充。由于生产过程自动化程度的不断提高,测控系统的结构日趋复杂,设计人员很难在短时间内就对整个系统理解无误,软件的设计与调试不可能。

一次完成,有些问题是在运行中逐步暴露出来,这就要求编制的软件容易理解和修改。在软件的设计方法中,结构化设计是最好的一种设计方法,这种设计方法是由整体到局部,然后再由局部到细节,先考虑整个系统所要实现的功能,确定整体目标,然后把这个目标分成一个个的任务。任务中可以分成若干个子任务,送样逐层细分,逐个实现。本仪表就是采用这种模块化的设计方法。这样不但使得设计目标明确、思路清晰,而且在检错、调试时也很方便。当出现问题时,可以根据问题的种类和现象来判断是哪一部分出的问题,很容易找出故障所在和故障原因。同时,采用模块化程序结构设计方案,对于系统功能的扩充和修改也提供了很大的方便。

实时性。实时性是本系统的基本要求。即要求系统及时响应外部事件的发生,并及时给出处理结果。近年来,由于硬件的集成度与速度的提高,配合相应的软件,实时性容易满足要求,特别是对于汇编语言编制的软件。

  1. 可测试性。系统软件的可测试性具有两方面的含义:其一是指比较容易地制定出测试准则,并根据这些准则对软件进行测定;其二是软件设计完成后,首先在模拟环境下运行,经过静态分析和动态仿真运行,证明准确无误后才可投入实际运行。
  2. 准确性。准确性对整个系统具有重要意义。系统要进行大量运算,算法的正确性和准确性问题对控制结果有直接影响,因此在算法选择、位数选择方面要适合要求。
  3. 可靠性。可靠性是系统软件最重要的指标之一,它要求两方面的意义:第一是运行参数环境发生变化时,软件都能可靠运行并给出正确结果,也就是要求软件具有自适应性:第二是在环境恶劣干扰严重情况下,软件必须保证也能可靠运行,这对整个系统尤为重要。

软件组成

由于整个系统软件相对比较庞大,为了便于编写、调试、修改和增删,系统软件的编制采用了模块化的设计。即整个控制软件由许多独立的小模块组成,它们之间通过软件接口连接,遵循模块内部数据关系紧凑,模块之间数据关系松散的原则,按功能形成模块化结构。

系统的软件主要由主程序模块、数据采集模块、数据处理模块、控制算法模块等组成。主模块的功能是为其余几个模块构建整体框架及初始化工作;数据采集模块的作用是将A/D转换的数字量采集并储存到存储器中;数据处理模块是将采集到的数据进行一系列的处理,其中最重要的是数字滤波程序:控制算法模块完成控制系统的PID运算并且输出控制量。

下面就介绍本系统几个主要的程序模块。

程序结构分析

本系统单片机的软件程序结构采用模块化的结构编程,主要包括:主程序设计,EEPROM读写程序设计,锁存器程序设计,显示程序设计,按键程序设计、温度采集程序设计、湿度采集程序设计。

主程序调用了4个子程序,分别是温度传感器读取程序,数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序。

主程序

主程序功能是首先完成各部分初始化,包括设备初始化、定时器初始化、看门狗初始化,EEPROM初始化。然后是调用各模块的的子程序进行相应的功能实现其包括温湿度显示、AD转换、温湿度控制及报警。如图3-1所示。

图 3-1系统程序框图

图 3-1系统程序框图

按键程序设计

本设计按键只有三个:设置键、加、减。这三个键要实现功能是通过设置键实现系统参数的设置,再长按设置键一定时间之后,进入手动模式,在手动模式中可以设定温湿度的给定范围,在一定时间没设置是系统自动跳回自动状态,显示当湿度的数值,由于键盘有按下和松开两种形式,其中按下时暂时的,当停止按压时按键就会变为开的形式,由于按键的状态值只是在程序中给定的但是实际上按键是在操作中实现的,所应该对按键进行消除抖动来协调人工操作和程序读取时的快慢不协调问题其程序框图如图3-2所示: 本系统在按键设置上采用两种模式,在默认情况下是手动模式,在手动模式时,按一下设置键可以是界面切换到设计界面,可以分别设置温湿度的上限,和下限,通过加、减键可以进行参数的更改和设定。在将这些设置完成后系统恢复到显示状态,显示当前测量的温湿度的值,另一种模式为自动模式,其设定方式是通过长按设置键来使模式切换到自动,在自动模式时,能够自动判断当前的状态,如果发现温湿度超限,则会发出报警信号。

图 3-2按键程序框图

图 3-2按键程序框图

  1. 判断是否有键按下 按键的一端接在单片机串口上另一端是接地的因此当按键按下时单片机的接口上会得到一个低电平的输入。所以当有按键按下时单片机的接口应该收到一个0x00得值或者低于0xff得值。
  2. 确定按下的是哪一个键 有本设计有3个按键,这样当按键按下时就要对识别是哪个按键按下,但是由于仪表内的参数是程序都设定好的,只要将按键设计不同的工作模式就行了。通过模式切换就可以知道 按下那个按键了。
  3. 等待按键释放 在按键按下以后,还需确定按键是否松开,来判断按键的时间因为系统设计对于按键的模式分为按一次和长按,这样对于按键释放的时间就要进行相应的判断来使单片机切换到相应的模式。
  4. 按键的值 由于按键不同模式其标志定位的值是不同的,系统需读取按键的值来是驱动单片机的模式切换。
  5. 按键的消抖处理 按键消除抖动的方式有两种:一种为构建硬件电路来消除按键的抖动,主要原理是是利用RS触发器得互锁功能,能够消除抖动,但是这样就会加大硬件设计的负担,同时是电路复杂,按照通常的仪表来讲其显示模块一般不会占用太大的空间,应为配电柜仪表室空间是有限。所以我们采用的是另一种利用程序的延时消抖方式,利用单片机首次检测到按键信号的时候延时一段时间,在确定按键的状态,这样可以读出稳定之后的状态,相对硬件来讲软件的不增加成本,也不复杂。

温度采集模块

由于单片机只能读取数字信号。当温度传感器将温度以电压量采集的,所以采用atmega8内AD模块进行数模转换,在硬件设计时也提到了对于温度计算的方法能够但不是每个二进制AD值都对应着整数温度这样的话测量出的温度就会有很大的误差需要进行校准,所以设计选择了用插值法来进行校准,这种方法是将校准曲线的分为许多小的区间,每个区间利用多项式进行拟合根据输入量的所在的区间来计算出现和对精准的测量值。线性插值原理如图3-3所示。

图3-3 线性插值原理

图3-3 线性插值原理

当传感器的输入和输出按要求进行分段这样就可以将每一段的趋向近似呈直线来看,假设在Xi和Xi+1之间那么它相对的输出值可以近似地看成: $ y=y_i+(x-x_i)$ (3-1) 通过这样的计算可以将将温度值进行校准但是如何将置换华为是程序设计的具体是实现过程是这样的,首先要将校准曲线进行合理的分段选取基点。然后确定个插值点的AD得值,然后计算出相应输出值,最后还要查表比较,确定其所在的范围,再根据公式求出相应的值。温度采集程序如图3-4所示:

图3-4 温度程序框图

图3-4 温度程序框图

显示程序设计

显示程序主要是利用单片机将控制数码显示温湿度得值,由于硬件设计为两个锁存器控制两个3位8段数码管的显示。如此一来,单芯片的I/O控制线便可以减少了,省下来的控制线可以做其他硬件的设计。通过利用锁存器的级联方法可以使较为方便的选择那个数码管显示,方便了程序设计和电路设计。利用其数据传递式的发送,可以将数据显示出来那么程序设计来讲首先要将数字转化为对应的显示器的段码,在显示采用扫描的方式了,延时2ms可以利用人眼残留现象,避免闪烁。然后确定是显示温度值还是湿度值,进行数码管的选择。然后确定每位数码管显示的相应的值,进行显示设置,最后设置温度精度和湿度精度显示。其程序框图为如图3-5所示:

图3-6 显示模块流程图

图3-6 显示模块流程图

数据存储寄存器程序设计

EEPROM主要是将数据进行保存以保证在掉电的情况下单片机还能保存当前的数据那么他设计程序很简单基本就是包括从EEPROM写数据及然后就是进行判断是否写完然后设置寄存器,设置存储地址,置位写操作。读程序的方式跟写操作是同样的。

本章小结

这一部分主要对单片机的软件驱动动程序进行了设计,程序的设计采用了模块化的方式,如何将单片机要实现的功能利用软件的方式进行驱动,对于软件编写,不应该利用过多的技巧使编程语言变得生涩让人难懂,同时也不该将程序变得太长,这样也会造成与硬件不协调。在本系统中虽然测量的量只有温度和湿度两个量,当但是却采用了许多函数进行计算,程序比较复杂,这对与单片机的数据的处理能力有了很高的要求。虽然采用模块化编程的开发率很高但是效率有点低,但作为一种很基础的编程方式具有很好的指导意义和启发。

系统调试

对一个单片机系统来说不仅仅只有其性能的好坏、功能强弱以及成本的高低,可靠性也是一个十分重要的指标,如果一个系统的靠靠度不高那么会增加其维修成本降低使用寿命影响其正常的功能。在本系统研发阶段主要能够提高系统可靠性有以下几种方法:

  1. 系统自身的可靠性,再设计过程中应减少设计和制作对系统自身可靠性的影响。
  2. 抗干扰技术:提高系统的开干扰能力能够降低在实际运行时外部因素对于系统的影响。
  3. 系统的容错性设计:要明确系统在受到外部因素影响时,系统能够进行避免和减少损失。 ## 硬件调试

首先应进行上电前的准备。为了防止硬件的损坏,应在电路板上电前进行电路检查,包括:对芯片的焊接方向进行检查,对芯片的引脚进行短路和断路检查。

在经过检查确认芯片的焊接没有任何问题的情况下,进行上电检查,在电源打开后,先判断电路是否存在异常,如出现芯片过热等现象,应及时切断电源,检查电路故障。在上电无异常状况的前提下,可以用万用表和示波器进行测量。首先测量电源芯片的输出电压是否正常,然后用示波器分别测量各个主要芯片电源引脚,察看电源的波形情况,如有纹波,则在预先留出的位置上焊上退耦电容以消除纹波,保证芯片工作正常。电源测量完毕后,进一步用示波器测量有源晶振的输出脚,其输出是频率为8MHz的波形(非方波,类似正弦波)。在确定晶振起振后,按住复位键,使单片机始终保持在复位状态,同时测量其各个引脚的电平情况,并同数据手册上表述的复位时的芯片引脚状态进行比对,由此可判断单片机是否正常。确认单片机正常之后就可以通过仿真器连接用户板进行调试。

软件的调试

由于软件的编写都是根据各个模块进行的,我们在进行软件的系统模拟调试时应,先确认硬件的接口标记是否在软件程序中一一对应,而且要检测所编写的软件有没有知识性的错误。在觉得基本没有问题后我们通过电脑将程序编译进入系统核心AT89S52单片机,检验软件与硬件各部分是否协调的工作。出现问题时我们要耐心的检查程序并作出适当的修改,直到软件系统的完全契合硬件电路,那我们软件就调试成功了。

  1. 测试环境 环境温度28摄氏度,室内面积20平方米 测试仪器:数字万用表,温度计0----100摄氏度

  2. 测试方法 使系统运行,采用温度计同时测量室内度变化情况,得出系统测量的温度。

  3. 测试结果 设定温度由0摄氏度到40摄氏度 标定温差<=1摄氏度 调节时间 15s(具体视现场情况) 静态误差<=0.5摄氏度 最大超调量1摄氏度

  4. 通过测试分析,对于实际室内的温度控制,可以再提出以下 2 点方法 : Ⅰ增加传感器个数,对各个温度传感器采集的数据进行求算术平均,可得到较为准确的温度值。 Ⅱ对实际室内的温度控制,可采用功率较大的电炉,并且通过风扇对箱内温度进行充分搅和降温设备可采用空气压缩机等制冷设备。

  5. 通过实验测试和分析,发现虽然传感器的温度采集精度最高可得到 0.06 ℃,但测试得到的数据最小间隔为 0.03 ℃ 。通过分析,当对浮点数求平均处理时,遇到同一时刻两个传感头采集的温度相差不大,使 0.06 ℃ 时求出平均温度变为 0.03 ℃ 为了解该数据是否真实,可采用一个高精度的数字温度计测试,发现读出的值与其基本一致,由此推断如果在同一时间增加采集温度的个数,则可以进一步提高温度的精度。

注意事项

  1. 测驱动电路的过程中发现数码管不能正常显示的情况,经检验发现主要是由于接触不良的问题。其中包括线的接触不良和芯片的接触不良,在实验过程中,数码管有几段时隐时现。用万用表检测发现有线接触不良,重焊后就可正常显示。而芯片接触不良用万用表欧姆档检测有几个引脚本该相通的地方却未通,其解决方法为把芯片拔出正对万能板孔均匀用力插入。
  2. 由于焊接时的大意损坏了元件,在调试是我们怎么都找不到问题的所在,我们是用排除法一个一个元件的测试的找出损坏的元件,重新换上新的元件,故障得以解决。
  3. 还有关于程序调试过程中出现的问题。执行程序是发现程序执行不稳定,排除软件的错误外,经老师的指导才发现单片机的EA管脚没有接地。因为次程序只用到片内程序存储器,所以在程序执行时一定要把管脚接的,这样程序才能只执行片内的,不然程序会乱跳,从而导致程序执行不稳定。
  4. 接三极管的过程中,发现电路不管程序是什么,数码管都是显示8字,经查除发现原来是三极管的极端弄错了,从新调整极端顺序。
  5. 在电路调试时由于我们选用的是对射型的光电传感器由于没正对好使的调试一度中断,最后我们通过反复的调试解决了问题
  6. 调试时由于线路的繁杂,没有仔细的找到对应部分的线路,使的调试的结果与预期出现很大的误差,我们通过梳理线路后就调试成功了并达到了预期的效果。

实验结果

首先按照电路将元器件焊在了电路板上,在硬件实物焊好了以后我首先电气其的电气连接进行了测试,来测量一下是否有缺焊、漏焊的现象,检查完引脚连接后,进行组装,硬件实物如图4-1所示

图4-1 实物图

图4-1 实物图

然后显示直接通电,有内部没有程序人,不能实现功能测试,进行这一目的的主要原因是对传感器进行了一下测试,测试其输出湿度是否为方波,温度输出是否为电压信号测量结果如图4-2所示:

图4-2 测湿波形

图4-2 测湿波形

由图可知传感器湿度采集电路输出波形性为稳定的方波与理论计算相符合,传感器没有问题可以进行数据采集。

在硬件测试没有问题后将程序通过烧录器将程序下载到单片机中,程序下载软件采用prognisp软件下载下载方式如图4-3所示:

图4-3 程序烧录界面

图4-3 程序烧录界面

将单片机程序下载后,由于初始设定值为0,所以温湿度会报警,而且显示当前的温湿度值如图4-4所示。

图4-3 程序下载后界面显示

图4-3 程序下载后界面显示

按照功能设计通过设置可以将温湿度的最大值和最小值进行设定如图4-4所示:

图4-4 最大值设置界面

图4-4 最大值设置界面

在设定后可以通过长按设定键将系统转换为自动方式并且设定其自动控制的温湿度的值,具体步骤过如图4-5所示

图4-5 自动模式

图4-5 自动模式

最后是对其控制功能进行设定由于本设计在输电电压为220v,由于实验室的条件有限只能对其输出电压进行测量其输出电压经测量输出电压为229V。

在这步骤都完成之后,在之后的几天对室内温湿度进行了相应的测量,来进行对其结果如表4-1所示

表4-1 测量数据

日期 温度(℃) 湿度(%RH) 实际温度(℃) 实际湿度(%RH)
12 24.1 50.1 26 46.
13 25.6 47.6 27 50
14 24.7 55.4 27 53
15 25.5 57.2 23.8 54
16 26.2 53.2 28 55

由表可知,温度误差在1.96℃,湿度误差在2.88%RH测量值相对精确。

出现问题及解决办法

  1. 程序下载后硬件显示的是当前湿度的频率值,并不是实际的湿度值,那么经测量传感器并没出问题,那么在测量硬件接口电压时发现T1电压被拉高,经过检差发现是定时器初始化的问题,重新定义之后发现湿度显示正常,问题解决。

  2. 在程序刚下载到单片机中时初始化其温湿度最大和最小值都为零,发生报警信号,报的警灯亮,但是在其设定之后报警声音消除但是报警灯继续亮,经检验发现为程序中灯输出端口的赋值不对经改正后故障消除

本章小结

由于实验条件和资源的问题只能对于产品的功能进行测量,其抗干扰能力及精度校准就无法实现但是,在功能测试时,产品实现对于设计目的要求,达到了目标,虽然在误差方面出现了一些浮动,但是考虑到产品元件的精度可能有误差造成测量精度的问题,这种情况下,由于个人的能力无法实现提高,但是其精度相差不大可以满足设计要求,实现温湿度的测量和控制。在调试过程中所遇到的问题不大,大多数为软件设计上的问题。所以在这里也对我所设计有所展望:

  1. 使用更高精度的电器元件来进行焊接,使其精度更高,
  2. 可以采用就更加先进的传感器使测量结果更精确。
  3. 希望能够添加一些隔离模块使仪表的抗干扰能力增强# 结束语

这个最后的项目设计对我很有帮助的。这种设计使我对在大学学习的知识有了全面的了解和深入的思考,并让我对所学的知识以及思考和编写最终设计综合游戏的能力有所了解和提升。最后,我完成了这项任务。撰写论文的过程也是学习专业知识的过程的一个重要的阶段。它使我能够使用现有的专业基础知识来设计,分析和解决理论或实践问题,并将知识转化为实践技能培训。我已经掌握了运用自己的知识来解决实际问题的能力。

通过这个最终设计的结果,我发现只有提高理论水平,才能将教科书的知识和实践结合起来,理论知识可以为教学实践服务,以提高我的实践能力。这个设计非常有意义。我有很多经验。通过这个最后的项目,我们知道了理论与实践之间的距离,将理论与实践相结合的重要性,并且我们已经学到了很多我们无法从书本中学到的知识。

我们的学习不仅应以书籍为基础的限制,而且还应以解决理论和实践中的实际问题为目标和导向,而且还应结合实践去具体分析。理论问题是实践问题,问题解决是课程研究。学生本身就是作为专家来看待。用手解决问题比用大脑解决问题更深刻。学习应要求理论与实践相结合。理论问题也是实际问题。这种方法不仅有助于完成理论知识的巩固,而且将有助于推进实践,解决实际问题,并增强我们服务和解决问题的能力。

总的来说,这个最终的设计使我学到了很多东西。这是大学的最后也是最重要的一课。它对我们的未来产生深远的影响,具有十分重要的意义。

参考文献

[1] 李伯成.基于MCS-51单片机的嵌入式系统设计.电子工业出版社.2004
[2] 宗光华,李大寨.多单片机系统应用技术.国防工业出版社.2003
[3] 胡学海.单片机原理及应用系统设计. 电子工业出版社.2005
[4] 孙育才,王荣兴,孙华芳.ATMEL新型AT89S52系列单片机及其应用.清华大学
出版社.2005
[5] 于京,张景璐.51系列单片机C程序设计与应用案例.中国电力出版社.2006
[6] 蔡杏山.Protel 99 SE 电路设计.人民邮电出版社. 2007
[7] 杨小川.Protel DXP 设计指导教程. 清华大学出版社.2003
[8] 李晓荃. 单片机原理与应用[M]. 电子工业出版社,2000年8月
[9] 何立民. AVR单片机原理与接口技术[M]. 北京航空航天大学出版社,2002
[10] 杨帮文. 新型继电器实用手册[M]. 北京人民邮电出版社.2004
[11] 何希才.传感器及其应用电路[M].北京:电子工业出版社,2001.131-135
[12] 丁镇生.传感器及传感技术应用[M].北京:电子工业出版社,1998.
[13] 王家桢.传感器与变送器[M].北京:清华大学出版社,1996.
[14] 曾巧媛.单片机原理及应用[M].北京:电子工业出版社.2002
[15] 何力民.单片机高级教程[M].北京:北京航空大学出版社.2000
[16] 金发庆.传感器技术与应用[M].北京:北京机械工业出版社.2000
[17] Katsuhiko Ogata.Moden Control Engineering.Publishing house of electronics industry,2000:1 96—202.
[18] Microchip 24C01B/02B 8 位PIC®单片机产品手册[ED/OL].
[19] Borko H,Bernier C L.Indexing concepts and methods .New York:Academic . [20] Dallas products data Book[M],1999.
[21] Maxim products data Book[M],2001.
[22] Shao Jianlong, He Chun. Design of a Portable Popular Multifunctional Development System for 8051 Single-chip Microprocessor Family [J]. Computer Engineering and Applications, 2003.13.

致 谢

本课题的完成中,我得到了很多人的帮助,在此表示衷心的感谢!

首先感谢我的指导老师高老师,我的课题是在他的指导和帮助下完成的,他深厚的理论功底和严谨的治学态度以及高度的敬业精神使我受益非浅,对我课题的完成起到了至关重要的作用。 经过这次毕业设计,使我觉得不论从理论知识还是从实际操纵中都学到了不少知识,我想归纳起来,主要有以下四个方面:

最后,我要感谢的母校东北石油大学大学,为我提供的良好的学习与发展环境。感谢我的指导教师高新成给予我帮助,感谢母校开放、公正的言论环境,现代、实用的学习环境,舒适、便捷的生活环境让我顺利度过了人生的关键三年。愿所有校园里认识的,不认识的;来过的,走过的……愿你们珍惜握在手里的现在,抓住机遇,拥有一个美好的明天。

附录一 程序

程序如下:

TM_NUM EQU 23H
TM_L EQU 22H
TM_H EQU 21H
DSPBUF EQU 40H
DQ BIT P2.0
FLAG BIT 00H
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP __INTT0__
ORG 30H
MAIN: MOV SP,#070H
      MOV TMOD,#02H
      MOV IE,#82H
      MOV TH0,#6
      MOV TL0,#6
      MOV R2,#04
      MOV R1,#40H
 LL1: MOV @R1,#00
      INC R1
      DJNZ R2,LL1
      SETB RS0
      MOV R2,#00
      MOV R3,#00
      MOV R4,#00
      MOV R5,#00
      MOV 6FH,#00H
      CLR RS0
      CLR P3.0
      MOV 30H,#02
      MOV 31H,#06
      MOV 32H,#0
      LCALL CHEWEN
__INSTANCE__:CLR TR0
      SETB P2.1
      JB P2.1,K3
      LCALL KKEY
   K3:CLR 01H
      MOV R2,44H
      CJNE R2,#00,K2
      SJMP K7
   K2:CPL P3.0
      MOV R3,#30
   K1:LCALL TM_DISP
      DJNZ R3,K1
      DJNZ R2,K2
   K7:MOV R2,45H
      CJNE R2,#00,K4
      SJMP K6
   K4:MOV R4,#255
  K44:CPL P3.0
      MOV R3,#30
   K5:LCALL TM_DISP
      DJNZ R3,K5
      DJNZ R4,K44
      DEC R2
      CJNE R2,#00,K4
  K6: CLR P3.0
      LCALL CHEWEN
      SETB TR0
MAIN2:JB 01H, __INSTANCE__
      LCALL TM_DISP
      SJMP MAIN2
CHEWEN:CLR RS1
       CLR RS0
      LCALL GET_TM
      LCALL TM_COV
      LCALL DTOB
      LCALL DTOB1
      CLR C
      MOV A,33H
      SUBB A,44H
      MOV 44H,A
      MOV A,34H
      SUBB A,45H
      MOV 45H,A
      RET

    __INTT0__:PUSH ACC
          PUSH B
          SETB RS0
          INC R2
          CJNE R2,#100,__JT0__
          INC 6FH
    
          MOV A,6FH
          CJNE A,#20,__JT0__
          MOV 6FH,#00H
          INC R3
          MOV R2,#00H
          CJNE R3,#2,__JT0__
          SETB 01H
          MOV R3,#00
    
     __JT0__: CLR RS0
          POP B
          POP ACC
          RETI


KKEY: MOV R2,#00
      MOV R4,#0AH
 KS2: LCALL TM_DISP
      DJNZ R4,KS2
      SETB P2.1
      JB P2.1,KKEY1
      JNB P2.1,$
      MOV 60H,#DSPBUF+1
      MOV R1,#DSPBUF+1
      MOV R2,#00
KEY1: LCALL TM_DISP_2
      MOV P2,#0FFH
      MOV A,P2
      ORL A,#01
      CPL A
      JZ KEY1

KEY2: JNB ACC.1,KEY3
      JNB P2.1,$
      INC R1

      INC R2
      CJNE R2,#03,L13
      MOV R1,#DSPBUF+1
      MOV R2,#00

 L13: MOV 60H,R1
      SJMP KEY1
KEY3: JNB ACC.2,KEY4
      JNB P2.2,$
      MOV A,@R1
      CJNE R1,#41H,L1
      CJNE A,#09,LL
      SJMP KEY5
  L1: CJNE R1,#42H,L2
      MOV A,@R1
      CJNE A,#09,LL
      SJMP KEY5
  L2: CJNE R1,#43H,L3
      CJNE A,#09,LL

KEY5: MOV @R1,#00
  L3: SJMP KEY1
  LL: INC A
      MOV @R1,A
  L6: SJMP KEY1
KEY4: JNB ACC.3,KEY1
      JNB P2.3,$
      MOV 30H,41H
      MOV 31H,42H
      MOV 32H,43H
      ACALL DTOB
KKEY1:RET

     DTOB:SETB RS0
          SETB RS1
          MOV A,31H
          MOV B,#10
          MUL AB
          ADD A,32H
          MOV 33H,A
          MOV 34H,#00
          MOV R6,30H
          CJNE R6,#00,JT2
          SJMP JT22
     JT2: MOV A,33H
          ADD A,#100
          MOV 33H,A
          MOV A,34H
          ADDC A,#00
          MOV 34H,A
          DJNZ R6,JT2
     JT22:CLR RS1
          CLR RS0
          RET

  DTOB1:  SETB RS0
          SETB RS1
          MOV A,42H
          MOV B,#10
          MUL AB
          ADD A,43H
          MOV 44H,A
          MOV 45H,#00
          MOV R6,41H
          CJNE R6,#00,JJT2
          SJMP JJT22
    JJT2: MOV A,44H
          ADD A,#100
          MOV 44H,A
          MOV A,45H
          ADDC A,#00
          MOV 45H,A
          DJNZ R6,JJT2
   JJT22: CLR RS1
          CLR RS0
          RET
WR_18B20: MOV R2,#08H
         CLR C
         SETB DQ
         MOV R3,#02H
         DJNZ R3,$
         NOP
    WR1: CLR DQ
         MOV R3,#03H
         DJNZ R3,$
         RRC A
         MOV DQ,C
         MOV R3,#20
         DJNZ R3,$
         SETB DQ
         MOV R3,#03H
         DJNZ R3,$
         DJNZ R2,WR1
         SETB DQ
         RET
RD_18B20: MOV R4,#02H
          MOV R1,#22H
     RE0: MOV R2,#08H
     RE1: CLR C
          SETB DQ
          NOP
          CLR DQ
          NOP
          NOP
          SETB DQ
          MOV R3,#01H
          DJNZ R3,$
          MOV C,DQ
          MOV R3,#010H
          DJNZ R3,$
          RRC A
          DJNZ R2,RE1
          MOV @R1,A
          DEC R1
          DJNZ R4,RE0
          RET
INI_18B20: SETB DQ
           NOP
           CLR DQ
           MOV R4,#150
           DJNZ R4,$
          ;LCALL TM_DISP
          ;LCALL TM_DISP
           SETB DQ
      TS0: MOV R4,#19H
           JNB DQ,TS1
           DJNZ R4,TS0
           SJMP TS2
      TS1: SETB FLAG
           SJMP TS3
      TS2: CLR FLAG
           SJMP TS4
      TS3: ;LCALL TM_DISP
           MOV R4,#120
           DJNZ R4,$
      TS4: SETB DQ
           RET
DELAY8ms: MOV R6,#2H
      KL1: MOV R7,#80H

      KL2: DJNZ R7,KL2
          DJNZ R6,KL1
          RET

GET_TM: SETB DQ
    S1: LCALL INI_18B20
        JB FLAG,S2
        SJMP S1
    S2: MOV R4,#10H
        DJNZ R4,$
        MOV A,#0CCH
        LCALL WR_18B20
        MOV A,#44H
        LCALL WR_18B20
        MOV R4,#0ffH
    S3: LCALL TM_DISP
        DJNZ R4,S3
    S4: LCALL INI_18B20
        JB FLAG,S5
        SJMP S4
    S5: MOV A,#0CCH
        LCALL WR_18B20
        MOV A,#0BEH
        LCALL WR_18B20
        LCALL RD_18B20
        LCALL INI_18B20
        MOV R4,#10H
    S6: LCALL TM_DISP
        DJNZ R4,S6
    S7: RET
TM_COV: MOV A,#0F0H
        ANL A,TM_L
        SWAP A
        MOV TM_NUM,A
        MOV A,TM_H
        ANL A,#07H
        SWAP A
        ORL A,TM_NUM
        MOV TM_NUM,A
        MOV R0,#DSPBUF
        JNB 0FH,SING
        MOV @R0,#0BH
        CPL A
        CLR ACC.7
        ADD A,#01H
        MOV TM_NUM,A
        SJMP SING1
  SING: MOV @R0,#0AH
 SING1: MOV B,#10
        DIV AB
        INC R0
        MOV @R0,A
        INC R0
        MOV A,B
        MOV @R0,A
        INC R0
        MOV A,#00H
        JNB 13H,DOT1
        ADD A,#50
  DOT1: JNB 12H,DOT2
        ADD A,#25
  DOT2: JNB 11H,DOT3
        ADD A,#12
  DOT3: JNB 10H,DOT4
        ADD A,#6
  DOT4: MOV B,#10
        DIV AB
        MOV @R0,A
        RET
TM_DISP: CLR RS1
         CLR RS0
         MOV DPTR,#TAB
         MOV R0,#DSPBUF
         MOV B,#0FEH
         MOV R5,#04
   DIP1: MOV A,@R0
         MOV P0,#0FFH
         MOV P1,#0FFH
         MOVC A,@A+DPTR
         CJNE R5,#02,DIP2
         ANL A,#7FH
   DIP2: MOV P0,A
         MOV A,B
         MOV P1,A
         RL A
         MOV B,A
         LCALL DELAY8ms
         INC R0
         DJNZ R5,DIP1
         RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TM_DISP_1: CLR RS1
         CLR RS0
         MOV DPTR,#TAB
         MOV R0,#DSPBUF
         MOV B,#0FEH
         MOV R5,#04
 DDIP4:  MOV A,R0
         MOV P0,#0FFH
         MOV P1,#0FFH
         CJNE A,60H,DDIP1
         MOV A,#0FFH
         SJMP DDIP3
  DDIP1: MOV A,@R0
         MOVC A,@A+DPTR
  DDIP3: CJNE R5,#02,DDIP2
         ANL A,#7FH
  DDIP2: MOV P0,A
         MOV A,B
         MOV P1,A
         RL A
         MOV B,A
         LCALL DELAY8ms
         INC R0
         DJNZ R5,DDIP4
         RET
 ;;;;;;;;;;;;;;;;;;;;;
 TM_DISP_2: MOV R4,#10H
  KS4: LCALL TM_DISP
      DJNZ R4,KS4
      MOV R4,#1FH
  KS5: LCALL TM_DISP_1
      DJNZ R4,KS5
      RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CFH
END

附录二 硬件电路图

图10-8 硬件电路图

图10-8 硬件电路图